using UnityEngine;
using System;
using System.Collections.Generic;


public class PlayerPrefsUtil
{
    public static bool GetBool(string key, bool _default)
    {
        var v = PlayerPrefs.GetInt(key, -1);
        if(v == -1)
        {
            return _default;
        }
        return v == 1;
    }

    public static void SetBool(string key, bool value)
    {
        var v = value ? 1 : 0;
        PlayerPrefs.SetInt(key, v);
    }

    public static void SetEnum<TEnum>(string key, TEnum value) where TEnum : Enum
    {
        var intValue = Convert.ToInt32(value);
        PlayerPrefs.SetInt(key, intValue);
    }

    public static TEnum GetEnum<TEnum>(string key, TEnum defaultValue) where TEnum : Enum
    {
        var b = PlayerPrefs.HasKey(key);
        if(!b)
        {
            return defaultValue;
        }
        var intValue = PlayerPrefs.GetInt(key);
        var v = (TEnum)Enum.ToObject(typeof(TEnum), intValue);
        return v;
    }

    //public static void SetDictionary<TKey, TValue>(string key, Dictionary<TKey, TValue> dic)
    //{
    //    var json = JsonMapper.Instance.ToJson(dic);
    //    PlayerPrefs.SetString(key, json);
    //}

    //public static Dictionary<TKey, TValue> GetDictionary<TKey,TValue>(string key, ref Dictionary<TKey, TValue> cache)
    //{
    //    if(cache != null)
    //    {
    //        return cache;
    //    }
    //    var b = PlayerPrefs.HasKey(key);
    //    if(!b)
    //    {
    //        var ret = new Dictionary<TKey, TValue>();
    //        cache = ret;
    //        return ret;
    //    }
    //    var strValue = PlayerPrefs.GetString(key);
    //    try
    //    {
    //        var ret = JsonMapper.Instance.ToObject<Dictionary<TKey, TValue>>(strValue);
    //        cache = ret;
    //        return ret;
    //    }
    //    catch
    //    {
    //        var ret = new Dictionary<TKey, TValue>();
    //        cache = ret;
    //        return ret;
    //    }
    //}

}